// Mateo i Maly
 

program mlaeckibrozda;
uses crt;
var a,b,dok:real;
    ile:integer;

function f(x:real):real;
begin
 f:=x*x-x-12;
end;

function pole(a,b,x:real):real;
var d,h,ppole:real;
    i:integer;
begin
ppole:=0;
d:=b-a;
h:=d/x;
i:=0;
while(i*h+a<=b) do
  Begin
  ppole:=ppole+h*f(i*h+a);
  inc(i);
End;
 ppole:=ppole+h*f(b);
 pole:=ppole;
end;

function m0(a,b:real):real;
var c:real;
begin
  Begin
   repeat
   begin
    c:=(b+a)/2;
    if f(a)*f(c)<0 then b:=c else a:=c;
    end;
    until abs(a-b)<dok;
    writeln('Miejsce zerowe: ',a:1:2);
    m0:=a;
   end;
  end;

procedure mszerowe(a,b:real);
var zlicz,i:integer;
a2,b2,c,krok:real;
begin
  begin
  zlicz:=0;
  krok:=(b-a)/ile;
  a2:=a;
  for i:=1 to ile do
    begin
    a2:=a2+krok;
    b2:=a2+krok;
    if(f(a2)*f(b2)<0) OR(f(b2)=0) then
    begin
    m0(a2,b2);
    zlicz:=zlicz+1;
    end;
   end;
  writeln('Znaleziono ',zlicz,' miejsc zerowych');
  end;
end;
Begin
clrscr;
writeln('Podaj dokladnosc obliczen');
read(dok);
writeln('Podaj poczatek przedzialu: ');
read(a);
writeln('Podaj koniec przedzialu: ');
read(b);
writeln('Ile przedzialow: ');
read(ile);
writeln('Pole figury pod wykresem ',pole(a,b,dok):10:5);
mszerowe(a,b);
readkey;
End.

 


